import { getToken, setToken, removeToken } from '@/utils/auth'
import { login, getUserInfo, getDetailInfo } from '@/api/user'
import { resetRouter } from '@/router'

const state = {
  token: getToken(),
  userInfo: {}
}
const mutations = {
  // 更新token
  updateToken(state, token) {
    state.token = token // 修改token
    setToken(token) // 数据持久化，存token
    // setTime(Date.now()) // 当前时间戳，持久化
  },
  // 更新用户资料
  updateUserInfo(state, info) {
    state.userInfo = info
  },
  // 移除token
  delToken(state) {
    state.token = null
    removeToken()
  },
  // 移除用户资料
  delUserInfo(state) {
    state.userInfo = {}
  }
}
const actions = {
  // 调用login发起axios请求
  async getLogin(ctx, data) {
    const results = await login(data)
    // console.log('-----')
    // console.log(results)
    // 数据提交
    ctx.commit('updateToken', results)
  },
  // 获取用户资料
  async getUser(ctx) {
    const results = await getUserInfo()
    // 获取用户详细资料
    const resultsDetail = await getDetailInfo(results.userId)
    const newResults = { ...results, ...resultsDetail }
    console.log(newResults)
    ctx.commit('updateUserInfo', newResults)
    return newResults
  },
  // 清除用户token和用户资料
  logout(ctx) {
    ctx.commit('delToken')
    ctx.commit('delUserInfo')
    // 重置路由
    resetRouter()
    ctx.dispatch('permission/filterRoute', [], { root: true })
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
